long a wideVamos a usar la función dcast del paquete reshape2, para convertir las categorias de la columna year en las variables del nuevo dataframe. En el argumento data se escribe el df que queremos transponer, en el argumento formula se escribe del lado derecho la(s) variable(s) de 'id' y en el lado izquierdo separado por ~ se escribe la(s) variable(s) que queremos trasponer. En el script de la clase veremos otros ejemplos.
data_long
## country year gdp
## 1 Colombia 2018 4000
## 2 Venezuela 2018 2000
## 3 Colombia 2019 3800
## 4 Venezuela 2019 2500
## 5 Colombia 2020 3000
## 6 Venezuela 2020 3500
data_wide = reshape2::dcast(data = data_long, formula = country ~ year , value.var="gdp")
data_wide
## country 2018 2019 2020
## 1 Colombia 4000 3800 3000
## 2 Venezuela 2000 2500 3500
wide a longVamos a usar la función melt del paquete reshape2, para convertir las variables 2018:2020 en una nueva columna de un dataframe. En el argumento data se escribe el df que queremos transponer, en el argumento id.vars se escribe la(s) variable(s) de 'id' y en el argumento value.name el nombre que le queremos poner a la variable vamos a crear los valores. En el script de la clase veremos otros ejemplos.
data_wide
## country 2018 2019 2020
## 1 Colombia 4000 3800 3000
## 2 Venezuela 2000 2500 3500
reshape2::melt(data = data_wide, id.vars=c("country") , value.name = 'gdp_pc')
## country variable gdp_pc
## 1 Colombia 2018 4000
## 2 Venezuela 2018 2000
## 3 Colombia 2019 3800
## 4 Venezuela 2019 2500
## 5 Colombia 2020 3000
## 6 Venezuela 2020 3500
Sin embargo, cuando tenemos que transponer variables con multiples columnas que contienen valores, puede no ser tan simple.
Tomado de: https://giphy.com/explore/equation
Vamos a replicar este ejemplo de stackoverflow (en casa).